package com.xu.mall.base.tree;

import java.io.Serializable;
import java.util.Set;

import com.xu.mall.base.tree.entity.ITreeEntity;

public interface ITreeNode<PK extends Serializable> {

	/** 获取节点数据 */
	public ITreeEntity getNodeDate();

	/** 获取父节点 */
	public ITreeNode<PK> getParent();

	/** 获取右节点 */
	public ITreeNode<PK> getRight();

	/** 获取左节点 */
	public ITreeNode<PK> getLeft();

	/** 获取当前节点子节点 */
	public Set<ITreeNode<PK>> getChildren();

	/** 获取当前节点所有子级节点 */
	public Set<ITreeNode<PK>> getAllChildren();

	/** 获取当前节点子节点数 */
	public int getChildrenCount();

	/** 获取当前节点所有子级节点数 */
	public int getAllChildrenCount();

	/** 是否有父节点 */
	public boolean hasParent();

	/** 是否有子节点 */
	public boolean hasChildren();

	/** 是否某节点的父节点 */
	public boolean isParentOf(PK id);

	/** 是否某节点的子节点 */
	public boolean isChildOf(PK id);

}
